#include <gst/gst.h>
#include <iostream>
#include <opencv2/opencv.hpp>
#include  <gst/rtsp-server/rtsp-server.h>

#define RK_GST 1

using namespace cv;
using namespace std;


class CMyStreamer
{
public:
    CMyStreamer();
    ~CMyStreamer();
    //! 用于初始化视频推流，仅调用一次
    /*!
    \param name: 推流的子地址名称，网络地址为：rtsp://Your Ip:port/name
    \param size: 保存分辨率，如cv::Size(1920, 1080)
    \param use_h265: 是否使用h265编码
    \param port: 端口号，默认是8554
    \param bitrate: 推流时候的码率，默认为2兆，单位是兆
    返回是否初始化成功
    */
    bool setup(std::string name, cv::Size size, bool use_h265, char *port, int bitrate);
    //! 判断推流通道是否已经打开
    bool isOpened();
    //! 用于推流每一帧图像，在循环中被调用
    /*!
    \param image: 待推流的视频帧
    */
    void stream(cv::Mat image);
    //! 释放资源
    void release();


    std::string name ;
	cv::Size size ;
	char *port ;
	bool use_h265;
	int bitrate;

private:
    friend void* ThreGst(void* arg);
    pthread_t thr_gst_ts_thread;
    bool GstIsOpen;
};



